package yunhe.dao;


import org.apache.ibatis.annotations.Param;
import yunhe.entity.*;

import java.util.List;
import java.util.Map;

public interface IProcureDao {
	/**
	 * 合同创建
	 * @param purchasePack
	 * @return
	 */
	boolean insertPurchasePack(PurchasePack purchasePack);
	/**
	 * 通过产品编码查询合同
	 * @param product
	 * @return
	 */
	PurchasePack selectPurchasePackByProduct(String proBarCode);
	/**
	 * 进货单的创建
	 * @param purchase
	 * @return
	 */
	boolean insertPurchase(Purchase purchase);
	/**
	 * 根据供货商名查询
	 * @param supplierName
	 * @return
	 */
	Supplier selectSupplierBySupplierName(String supplierName);
	/**
	 * 根据用户名查询用户详细信息
	 * @param empMsgName
	 * @return
	 */
	EmpMsg selectEmpMsgByEmpMsgName(String empMsgName);
	/**
	 * 根据仓库名查询仓库详细信息
	 * @param storageName
	 * @return
	 */
	Storage selectStorageByStorageName(String storageName);
	/**
	 * 根据产品编号查询产品信息
	 * @param proBarCode
	 * @return
	 */
	Product getByProBarCode(String proBarCode);
	/**
	 * 通过供货商和日期查询进货单
	 * @param supplyId
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	List<Purchase> selectPurchaseBySupplier(Map inMap);
	/**
	 * 一段时间内有关该供货商的采购单一共有多少条
	 * @param supplyId
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	int selectPurchaseBySupplierDate(Map inMap);
	/**
	 * 通过日期查询进货单
	 * @param startDate
	 * @param endDate
	 * @param pageSize
	 * @param currPage
	 * @return
	 */
	List<Purchase> selectPurchaseByPurchaseDate(Map inmap);
	/**
	 * 创建采购单
	 * @param purchaseAppend
	 * @return
	 */
	boolean insertPurchaseAppend(PurchaseAppend purchaseAppend);
	/**
	 * 通过采购数量分页查询有效采购单
	 * @param pageSize
	 * @param currPage
	 * @return
	 */
	List<PurchaseAppend> selectPurchaseAppendByValidPurQuantity(int pageSize,int currPage);
	/**
	 * 查询有效购买的条数
	 */
	int selectValidPurQuantity();
	/**
	 * 通过采购数量分页查询退货单
	 * @param pageSize
	 * @param currPage
	 * @return
	 */
	List<PurchaseAppend> selectPurchaseAppendByInvalidPurQuantity(int pageSize,int currPage);
	/**
	 * 查询有效购买的条数
	 * @return
	 */
	int selectInvalidPurQuantity();
	
	/**
	 * 根据产品编号和日期分页查询采购单
	 * @param pageSize
	 * @param currPage
	 * @param proBarCode
	 * @return
	 */
	List<PurchaseAppend> selectPurchaseAppendByProducts(int pageSize,int currPage,String proBarCode);
	/**
	 * 根据采购单编码查询进货单
	 * @param purchase
	 * @return
	 */
	Purchase selectPurchaseByPurchaseAppend(String prusId);
	/**
	 * 根据进货单查询采购单
	 * @param pursId
	 * @return
	 */
	PurchaseAppend selectPurchaseAppendByPurchase(String pursId);
	/**
	 * 添加产品
	 * @param product
	 * @return
	 */
	boolean insertProduct(Product product);
	/**
	 * 根据产品编号和日期分页查询采购单
	 * @param startDate
	 * @param endDate
	 * @param pageSize
	 * @param currPage
	 * @param proBarCode
	 * @return
	 */
	List<PurchaseAppend> selectPurchaseAppendByProductDate(Map inMap);
	/**
	 * 根据产品编号和日期查询共有多少条记录
	 * @param startDate
	 * @param endDate
	 * @param proBarCode
	 * @return
	 */
	int selectPurchaseAppendByProductDateCount(Map inMap);
	/**
	 * 根据供货商和日期分页查询采购单详细信息
	 * @param inMap
	 * @return
	 */
	List<PurchaseAppend> selectPurchaseAppendBySupplierPagesDate(Map inMap);
	/**
	 * 根据供货商和日期查询共有多少条采购单
	 * @param inMap
	 * @return
	 */
	int selectPurchaseAppendBySupplierPagesCount(Map inMap);
	/**
	 * 分页查询所有采购单
	 * @param pageSize
	 * @param currPage
	 * @return
	 */
	List<PurchaseAppend> selectPurchaseAppendByPages(int pageSize,int currPage);
	/**
	 * 共有多少采购单
	 * @return
	 */
	int selectPurchaseAppendCount();
	/**
	 * 根据采购单编号删除采购单
	 * @param purId
	 * @return
	 */
	boolean deletePurchaseAndPurchaseAppendBypurId(String purId);
	/**
	 * 根据采购单编号查询采购单
	 * @param purId
	 * @return
	 */
	PurchaseAppend selectPurchaseAppendByPurchaseAppend(String purId);
	/**
	 * 按日期分页查询退货单
	 * @param inMap
	 * @return
	 */
	List<PurchaseAppend> selectInvalidPurchaseAppendByPagesAndDate(Map inMap);
	/**
	 * 按日期查询退货单有多少条
	 * @param inMap
	 * @return
	 */
	int selectInvalidPurchaseAppendByPagesAndDateCount(Map inMap);
	/**
	 * 按日期分页查询采购单
	 * @param inMap
	 * @return
	 */
	List<PurchaseAppend> selectValidPurchaseAppendByPagesAndDate(Map inMap);
	/**
	 * 按日期查询采购单有多少条
	 * @param inMap
	 * @return
	 */
	int selectValidPurchaseAppendByPagesAndDateCount(Map inMap);
	/**
	 * 按供货商查询采购单
	 * @param supplyId
	 * @return
	 */
	List<PurchaseAppend> selectPurchaseBySupplierId(String supplyId);
	/**
	 * 按采购单主表查询采购单详细信息
	 * @param pursId
	 * @return
	 */
	List<PurchaseAppend> selectPurchaseAppendByPurchaseId(String pursId);

	/**
	 * 根据采购单编码查询进货单
	 * @param prusId
	 * @return
	 */
	List<PurchaseAppend> selectPurchaseAppend(@Param("prusId") String prusId);
	
}
